home *** CD-ROM | disk | FTP | other *** search
- (*----------------------------------------------------------------------*)
- (* Handle_Tab --- Process horizontal tab sequence *)
- (*----------------------------------------------------------------------*)
-
- PROCEDURE Handle_Tab( Tabs : Tab_Stop_Vector; NTabs : INTEGER );
-
- (*----------------------------------------------------------------------*)
- (* *)
- (* Procedure: Handle_Tab *)
- (* *)
- (* Purpose: Handle horizontal tab character for VT52, VT100. *)
- (* *)
- (* Calling Sequence: *)
- (* *)
- (* Handle_Tab( Tabs : Tab_Stop_Vector; NTabs : INTEGER ); *)
- (* *)
- (*----------------------------------------------------------------------*)
-
- VAR
- I : INTEGER;
- J : INTEGER;
- Curcol : INTEGER;
- ITab : INTEGER;
- TabCol : INTEGER;
-
- BEGIN (* Handle_Tab *)
-
- Curcol := WhereX;
-
- IF ( Curcol > Wrap_Screen_Col ) THEN
- Curcol := Wrap_Screen_Col;
-
- IF ( NTabs > 0 ) THEN
- BEGIN
-
- Itab := 1;
-
- WHILE ( ( ITab <= NTabs ) AND
- ( Curcol >= Tabs[Itab] ) ) DO
- ITab := SUCC( ITab );
-
- IF ( ITab <= NTabs ) THEN
- TabCol := Tabs[ITab]
- ELSE
- TabCol := Wrap_Screen_Col;
-
- END
- ELSE
- TabCol := Curcol;
-
- MoveToXY( TabCol , WhereY );
-
- IF Review_On THEN
- FOR I := CurCol TO ( TabCol - 1 ) DO
- BEGIN
- J := ORD( Review_Line[0] ) + 1;
- Review_Line[J] := ' ';
- Review_Line[0] := CHR( J );
- END;
-
- IF ( Capture_On AND Exact_Capture ) THEN
- Capture_Char( CHR( HT ) );
-
- IF Printer_On THEN
- FOR Itab := CurCol TO ( TabCol - 1 ) DO
- WRITE( Lst , ' ' );
-
- END (* Handle_Tab *);